自建k8s版本升級
睡睡唸
有人說他要測試OME(OverMediaEngine),串流直播軟體,說比SRS好一些,但自建的k8s版本不夠,不能上gateway API,所以升級吧。
正文
更新前請先確認版本更新後,你的服務不會掛掉。
更新大版本時,會有API棄用的狀況, 162.查詢已棄用的API
目標
更新k8s的master一臺與node兩臺的版本
步驟
- 查詢目前的版本
kuberctl version
(這是目前版本,升級當時的版本為1.22.?)
server的版本為1.25.14
Server Version: version.Info
- 升級kubeadm
# 查看所有可用的kubeadm的版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 然後升級kubeadm的版本到1.23.0
yum install -y kubeadm-1.23.0-0 --disableexcludes=kubernetes
# 查看kubeadm版本
kubeadm version
- 升級master控制
kubeadm upgrade plan
這邊碰到一個問題,我本來只想升級到1.23.0,
但上面這張圖,他要求直接到1.23.17,
不照做行不行,『不行』,升級會出錯。
所以回到第二步,再度更新kubeadm到1.23.17
再來一次kubeam upgrade plan
這次沒出現警告了
執行上面執行完upgrade plan
提供升級指令
kubeadm upgrade apply v1.23.17
完成後會看到
SUCCESS! Your cluster was upgraded to "v1.23.17". Enjoy!
- 升級kubectl 與 kubelet
查看目前節點版本
kubectl get node -o wide
驅逐當下節點的pod(這段與參考來源的指令不一樣,這個比較暴力)
$master為節點的名稱
kubectl drain --force --ignore-daemonsets --delete-local-data --grace-period=10 "$master"
等驅逐完後,確認node為SchedulingDisabled
狀態,就可已開始升級了。
yum install -y kubelet-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes
# 重啓服務
sudo systemctl daemon-reload
sudo systemctl restart kubelet
查詢node版本是否已經更新,然後解除封鎖。
kubectl uncordon $node
- 升級node的版本
重複第四步驟,只有更新那一段yum install....
需要到目標的node機器上做。
所以指令如下
$node為要更新的node主機
# master主機
kubectl drain --force --ignore-daemonsets --delete-local-data --grace-period=10 "$node"
# node主機
yum install -y kubelet-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes
# 重啓服務
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# master主機
kubectl uncordon $node
ref.